/**
 * @author: leon
 * @date: 2020/9/3 1:33 下午
 */
import qs from 'qs';
import { isUndef } from '@/tool/index';

const pages = {
  chat: '/pages/chat/index',
  login: '/pages/login/index',
  settings: '/pages/settings/index',
};

/**
 * 跳转
 * @param page {String}
 * @param params {Object}
 * @param type {Number} 1-navigateTo 2-redirectTo
 */
const navigate = ({ page, params = {}, type = 1 }) => {
  if (process.env.NODE_ENV === 'development' && isUndef(pages[page])) {
    console.error('page is not exist');
    return;
  }
  const url = `${pages[page] + qs.stringify(params, { addQueryPrefix: true })}`;
  console.log("navigate", url + '---' + JSON.stringify(params) + '----' + type);
  // 历史记录搜索——跳转方式优化
  if (type === 1) {
    // 登录模块限制相同页面——登录信息变更情况
    const pagesRouter = getCurrentPages();
    console.log('pagesRouter', pagesRouter.length);
    if ((pagesRouter.length && pagesRouter[pagesRouter.length - 1].route) === 'pages/login/index') {
      console.log('不跳');
    } else if (pagesRouter.length >= 8) {
      // 页面栈超出8个时，清理页面,防卡死
      console.log('超过8个页面，清理页面');
      uni.reLaunch({ url });
    } else {
      console.log('超过8个页面，清理页面1111');
      uni.navigateTo({ url });
    }
  } else if (type === 2) {

    uni.redirectTo({ url });
  } else if (type === 3) {
    const pagesRouter = getCurrentPages();
    if (pagesRouter.length) {
      let indexFirst = -1;
      pagesRouter.forEach((item, index) => {
        if (`/${item.route}` === url && indexFirst <= 0) {
          // 相同路由
          indexFirst = index;
        }
      });

      // 历史记录存在
      if (indexFirst > -1 && indexFirst !== pagesRouter.length - 1) {
        console.log(pagesRouter.length, indexFirst);
        uni.navigateBack({
          delta: pagesRouter.length - indexFirst - 1,
        });
      } else if (indexFirst === -1 && pagesRouter.length <= 4) {
        // 不存在-页面继续
        uni.navigateTo({ url });
      } else if (indexFirst === -1 && pagesRouter.length > 4) {
        // 不存在-页面清理
        uni.reLaunch({ url });
      } else if (indexFirst === pagesRouter.length - 1) {
        // 当前页面
        console.log('不跳');
      }
    } else {
      uni.navigateTo({ url });
    }
  } else if (type === 4) {
    console.log('跳这里' + url);
    // uni.switchTab({url});
    uni.switchTab({
      url: url,
      success: function (e) {
        var page = getCurrentPages().pop();
        if (page == undefined || page == null) return;
        page.onLoad();
      }
    })
  }
};

export default navigate;
